---
title: Implement a LangChain integration
sidebarTitle: Implement
---

Integration packages are Python packages that users can install for use in their projects. They implement one or more components that adhere to the LangChain interface standards.

LangChain components are subclasses of base classes in [`langchain-core`](https://github.com/langchain-ai/langchain/tree/master/libs/core). Examples include [chat models](/oss/integrations/chat), [tools](/oss/integrations/tools), [retrievers](/oss/integrations/retrievers), and more.

Your integration package will typically implement a subclass of at least one of these components. Expand the tabs below to see details on each.

<Tabs>
    <Tab title="Chat Models">
        Chat models are subclasses of the [`BaseChatModel`](https://python.langchain.com/api_reference/core/language_models/langchain_core.language_models.chat_models.BaseChatModel.html) class. They implement methods for generating chat completions, handling message formatting, and managing model parameters.

        See the [chat model integration guide](/oss/langchain/models) for details on implementing a chat model integration.
    </Tab>
    <Tab title="Tools">
        Tools are used in 2 main ways:

        1. To define an "input schema" or "args schema" to pass to a chat model's tool calling feature along with a text request, such that the chat model can generate a "tool call", or parameters to call the tool with.
        2. To take a "tool call" as generated above, and take some action and return a response that can be passed back to the chat model as a ToolMessage.

        The Tools class must inherit from the [`BaseTool`](https://python.langchain.com/api_reference/core/tools/langchain_core.tools.base.BaseTool.html#langchain_core.tools.base.BaseTool) base class. This interface has 3 properties and 2 methods that should be implemented in a subclass.

        See the [tool integration guide](/oss/langchain/tools) for details on implementing a tool integration.
    </Tab>
    <Tab title="Retrievers">
        Retrievers are used to retrieve documents from APIs, databases, or other sources based on a query. The Retriever class must inherit from the BaseRetriever base class.

        See the [retriever integration guide](/oss/integrations/guide/retrievers) for details on implementing a retriever integration.
    </Tab>
    <Tab title="Vector Stores">
        All vector stores must inherit from the [`VectorStore`](https://python.langchain.com/api_reference/core/vectorstores/langchain_core.vectorstores.base.VectorStore.html) base class. This interface consists of methods for writing, deleting and searching for documents in the vector store.

        See the [vector store integration guide](/oss/integrations/vector-stores) for details on implementing a vector store integration.
    </Tab>
    <Tab title="Embeddings">
        Embedding models are subclasses of the [`Embeddings`](https://python.langchain.com/api_reference/core/embeddings/langchain_core.embeddings.embeddings.Embeddings.html) class.

        See the [embedding model integration guide](/oss/integrations/embeddings) for details on implementing an embedding model integration.
    </Tab>
</Tabs>
